Collection এবং Generic টাইপের Serialization

Java Technologies - জ্যাকসন (Jackson) - Java Object থেকে JSON (Serialization)
208

Java Collections এবং Generic টাইপের Serialization জাভা প্রোগ্রামিংয়ে গুরুত্বপূর্ণ একটি বিষয়, বিশেষ করে যখন আপনাকে জাভা অবজেক্টগুলোকে সংরক্ষণ বা ট্রান্সমিট করতে হয়। নিচে বিষয়টির বিস্তারিত আলোচনা দেওয়া হলো:


1. Java Collections Serialization

Java Collections Framework-এ বিভিন্ন ডেটা স্ট্রাকচার যেমন List, Set, Map ইত্যাদি আছে। এগুলো serialization-এর মাধ্যমে ফাইল সিস্টেমে সংরক্ষণ বা নেটওয়ার্কের মাধ্যমে ট্রান্সমিট করা সম্ভব।

উদাহরণ: Collection Serialization

import java.io.*;
import java.util.*;

public class CollectionSerializationExample {
    public static void main(String[] args) {
        // Collection তৈরি
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // Serialize করা
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("collection.ser"))) {
            oos.writeObject(list);
            System.out.println("Collection serialized successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Deserialize করা
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("collection.ser"))) {
            List<String> deserializedList = (List<String>) ois.readObject();
            System.out.println("Deserialized Collection: " + deserializedList);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

2. Generic টাইপের Serialization

Generic টাইপ ব্যবহার করলে একটি নির্দিষ্ট টাইপের অবজেক্টগুলো নিয়ে কাজ করা সহজ হয়। Generic ক্লাস বা কন্টেইনারগুলোও serialization সাপোর্ট করে।

উদাহরণ: Generic টাইপ Serialization

import java.io.*;
import java.util.*;

class GenericBox<T> implements Serializable {
    private T item;

    public GenericBox(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }

    public void setItem(T item) {
        this.item = item;
    }

    @Override
    public String toString() {
        return "GenericBox{" + "item=" + item + '}';
    }
}

public class GenericSerializationExample {
    public static void main(String[] args) {
        GenericBox<String> box = new GenericBox<>("Hello, Serialization!");

        // Serialize করা
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("genericBox.ser"))) {
            oos.writeObject(box);
            System.out.println("GenericBox serialized successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Deserialize করা
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("genericBox.ser"))) {
            GenericBox<String> deserializedBox = (GenericBox<String>) ois.readObject();
            System.out.println("Deserialized GenericBox: " + deserializedBox);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

3. Serialization-এর গুরুত্বপূর্ণ পয়েন্ট

  • Serializable ইন্টারফেস: কনক্রিট ক্লাসগুলো serialize করতে হলে java.io.Serializable ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।
  • transient কীওয়ার্ড: কিছু ফিল্ড serialize করতে না চাইলে তাদের transient ডিক্লেয়ার করুন।
  • সতর্কতা: Generic টাইপের সাথে প্রাইমিটিভ ডেটা টাইপ (int, double) সরাসরি কাজ করে না। Wrapper টাইপ ব্যবহার করতে হবে (যেমন, Integer, Double)।

4. Best Practices

  • serialVersionUID ফিল্ড ডিফাইন করা, যাতে ক্লাস ভার্সন চেঞ্জের পরেও serialization কাজ করে।
  • প্রয়োজন ছাড়া বড় Collection বা Object Graph serialize না করা, এতে পারফরম্যান্স সমস্যা হতে পারে।

এগুলো বাস্তব প্রজেক্টে ব্যবহারের ক্ষেত্রে খুবই গুরুত্বপূর্ণ।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...